Conventional client/server systems may include a client, an application server, and a database system. The client triggers an action in the application server such that the application server sends a database access statement to the database over a previously established connection to the database system. Typically, the application server is connected to the database system over a network (e.g., a Local Area Network (LAN)). Generally, only a limited number of connections are possible between the application server and the database system. Also, the network connecting the application server to the database system may perform poorly if a large number of database access statements are communicated over the network.
In most cases, the database system must compile the received database access statement before it can provide the requested data. The processing resources that a database system devotes to compiling received database access statements detracts from the resources available to provide data to other applications. This problem may be compounded in cases where the client submits the same database access statement many times with different values. For example, the client may repeatedly provide a database access statement containing a product identifier and request information pertaining to the identified product.
Traditional client/server systems are implemented with a single stack of technology from the physical layer to the application layer. In traditional single stack client/server systems a single data source (e.g., a database system) provides the data for all clients interacting with the application servers. A model in which different parts of the technology stack are implemented by different vendors is replacing the traditional single stack model. In multi-vendor implementations of client/server systems, it is much more likely that an application server will be connected to multiple data sources implemented by a variety of vendors.